У нас есть возможность делать заливки фигур на основе растрового изображения. Давайте создадим проект TestBrush, как SDI приложение. Добавим в проект растровую картинку.

И напишем код в функции OnDraw():
/////////////////////////////
// CTestBrushView drawing
void CTestBrushView::OnDraw(CDC* pDC)
{
CTestBrushDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CBrush* pTempBrush = NULL;
CBrush OrigBrush;
CBitmap bm;
bm.LoadBitmap(IDB_BITMAP1);
CBrush brush1(&bm);
pTempBrush=pDC->SelectObject(&brush1);
OrigBrush.FromHandle((HBRUSH)pTempBrush);
pDC->Rectangle(CRect(50,50,150,150));
pDC->SelectObject(&OrigBrush);
}
Основа кода это создание объекта CBitmap, из которого формируется CBrush, которым мы и выполняем функцию рисования прямоугольника.
Смотрим результат:

Растр лучше делать 8x8 пикселов, так как именно 8 пикселей и берется для заливки.